﻿using System;
using System.ComponentModel;
using System.Linq;
using DryIoc;

class Program
{
    static void Main(string[] args)
    {
        // 1. 创建 DryIOC 容器（核心对象）
        var container = new DryIoc.Container();

        // 2. 注册依赖：绑定接口与实现类
        // 方式1： transient（每次解析都创建新实例）
        container.Register<IUserRepository, UserRepository>();
        // 方式2：注册 UserService（容器自动注入其构造函数依赖的 IUserRepository）
        container.Register<UserService>();

        // 3. 解析实例：从容器获取 UserService（依赖自动注入）
        var userService = container.Resolve<UserService>();

        // 4. 测试 CRUD 操作
        Console.WriteLine("=== 初始用户列表 ===");
        PrintUsers(userService.GetAllUsers());

        // 增：添加新用户
        userService.AddUser(new User { Name = "王五" });
        Console.WriteLine("\n=== 添加王五后 ===");
        PrintUsers(userService.GetAllUsers());

        // 改：更新李四的姓名为「李四四」
        userService.UpdateUser(new User { Id = 2, Name = "李四四" });
        Console.WriteLine("\n=== 更新李四后 ===");
        PrintUsers(userService.GetAllUsers());

        // 查：查询ID=3的用户
        var user = userService.GetUserById(3);
        Console.WriteLine($"\n=== 查询ID=3的用户 ===");
        Console.WriteLine(user != null ? $"ID: {user.Id}, 姓名: {user.Name}" : "用户不存在");

        // 删：删除ID=1的用户（张三）
        var deleteSuccess = userService.DeleteUser(1);
        Console.WriteLine($"\n=== 删除ID=1的用户 ===");
        Console.WriteLine(deleteSuccess ? "删除成功" : "删除失败");
        PrintUsers(userService.GetAllUsers());
    }

    // 辅助方法：打印用户列表
    private static void PrintUsers(List<User> users)
    {
        foreach (var u in users)
        {
            Console.WriteLine($"ID: {u.Id}, 姓名: {u.Name}");
        }
    }
}
